package logica.persistencia;

import logica.EntidadRol;

import org.jdom.Element;

import vista.objetos.EntidadGraficable;
import vista.objetos.EntidadRolGraficable;
import vista.objetos.GraficableConEtiqueta;
import xml.ConstantesXml;
import xml.XMLManager;

public class EntidadRolGraficablePersistente extends
		EntidadGraficablePersistente {

	public EntidadRolGraficablePersistente(
			GraficableConEtiqueta _graficableConEtiqueta) {
		super(_graficableConEtiqueta);
	}
	
	public EntidadRolGraficablePersistente(Element elementoGraficable) {
		super(null);
		super.setElementoGraficable(elementoGraficable);
		
	}
	
	@Override
	public void serializar() {
		
		EntidadRolGraficable entidadRolGraficable = (EntidadRolGraficable)this.getGraficableConEtiqueta();
		
		Element elementoEntidad = serializarElementoEntidadGraficable(entidadRolGraficable);
		this.setElementoGraficable(elementoEntidad);
		this.getElementoPadre().addContent(elementoEntidad);
				
	}
	

	
	public static Element serializarElementoEntidadGraficable(EntidadRolGraficable entidadRG) {
		EntidadRol entidadRol = entidadRG.getEntidadRol();
		Element ref = new Element (ConstantesXml.ELEMENTO_ENTIDAD_ROL);
		
		int idRefEntidadRol = XMLManager.getIdentificador(entidadRol);
		int idRefEntidad = XMLManager.getIdentificador(entidadRol.getEntidad());
		ref.setAttribute(ConstantesXml.ATRIBUTO_NOMBRE_REF, entidadRol.getEntidad().getNombre());
		ref.setAttribute(ConstantesXml.ATRIBUTO_ID_OBJETO,  String.valueOf(idRefEntidadRol));
		ref.setAttribute(ConstantesXml.ATRIBUTO_ID_REF,  String.valueOf(idRefEntidad));
		return ref;
	}

	@Override
	public void hidratar() {
		String idStringEntRol = this.getElementoGraficable().getAttributeValue(ConstantesXml.ATRIBUTO_ID_OBJETO);
		EntidadRol entRol = (EntidadRol)XMLManager.getInstance().objtenerObjetoDiagramaConClave(idStringEntRol);
		
		String idStringEntG = this.getElementoGraficable().getAttributeValue(ConstantesXml.ATRIBUTO_ID_REF);
		EntidadGraficable entidadGraficable = (EntidadGraficable)XMLManager.getInstance().objtenerObjetoDiagramaRepConClave(idStringEntG);
		
		if (entRol != null && entidadGraficable != null) {
			EntidadRolGraficable entidadRolGraficable = new EntidadRolGraficable(entRol, entidadGraficable);
			this.setGraficableConEtiqueta(entidadRolGraficable);
		}
	}

	
	
}
